package pl.piomin.service.blockchain.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

import static pl.piomin.service.blockchain.config.Web3jProperties.WEB3J_PREFIX;

// 配置属性类，用于注入web3j相关的配置
//使用Spring框架的@ConfigurationProperties注解来实现，该注解指定了配置属性的前缀
@ConfigurationProperties(prefix = WEB3J_PREFIX)
public class Web3jProperties {

    // web3j配置的前缀
    public static final String WEB3J_PREFIX = "web3j";

    // 客户端地址，用于连接web3j
    private String clientAddress;

    // 是否为管理员客户端，可能影响到客户端的行为和权限
    private Boolean adminClient;

    // 网络ID，用于区分不同的区块链网络
    private String networkId;

    // HTTP连接的超时时间，单位为秒
    private Long httpTimeoutSeconds;

    /**
     * 获取客户端地址
     *
     * @return 客户端地址
     */
    public String getClientAddress() {
        return clientAddress;
    }

    /**
     * 设置客户端地址
     *
     * @param clientAddress 客户端地址
     */
    public void setClientAddress(String clientAddress) {
        this.clientAddress = clientAddress;
    }

    /**
     * 判断是否为管理员客户端
     *
     * @return 是否为管理员客户端
     */
    public Boolean isAdminClient() {
        return adminClient;
    }

    /**
     * 设置是否为管理员客户端
     *
     * @param adminClient 是否为管理员客户端
     */
    public void setAdminClient(Boolean adminClient) {
        this.adminClient = adminClient;
    }

    /**
     * 获取网络标识
     *
     * @return 网络标识
     */
    public String getNetworkId() {
        return networkId;
    }

    /**
     * 设置网络标识
     *
     * @param networkId 网络标识
     */
    public void setNetworkId(String networkId) {
        this.networkId = networkId;
    }

    /**
     * 获取HTTP超时时间（秒）
     *
     * @return HTTP超时时间（秒）
     */
    public Long getHttpTimeoutSeconds() {
        return httpTimeoutSeconds;
    }

    /**
     * 设置HTTP超时时间（秒）
     *
     * @param httpTimeoutSeconds HTTP超时时间（秒）
     */
    public void setHttpTimeoutSeconds(Long httpTimeoutSeconds) {
        this.httpTimeoutSeconds = httpTimeoutSeconds;
    }

}
